Cấu trúc gói tin TCP

Một gói tin TCP bao gồm 2 phần

  • header (có độ dài 20 bytes)
  • dữ liệu

Phần header có 11 trường trong đó 10 trường bắt buộc. Trường thứ 11 là tùy chọn (trong bảng minh họa có màu nền đỏ) có tên là: options

Header

+Bít 0 - 34 - 910 - 1516 - 31
0Source PortDestination Port
32Sequence Number
64Acknowledgement Number
96Data OffsetReservedFlagsWindow
128ChecksumUrgent Pointer
160Options (optional)
160/192+ 
Data
 
Source portSố hiệu của cổng tại máy tính gửi.Destination portSố hiệu của cổng tại máy tính nhận.Sequence numberTrường này có 2 nhiệm vụ. Nếu cờ SYN bật thì nó là số thứ tự gói ban đầu và byte đầu tiên được gửi có số thứ tự này cộng thêm 1. Nếu không có cờ SYN thì đây là số thứ tự của byte đầu tiên.Acknowledgement numberNếu cờ ACK bật thì giá trị của trường chính là số thứ tự gói tin tiếp theo mà bên nhận cần.Data offsetTrường có độ dài 4 bít quy định độ dài của phần header (tính theo đơn vị từ 32 bít). Phần header có độ dài tối thiểu là 5 từ (160 bit) và tối đa là 15 từ (480 bít).ReservedDành cho tương lai và có giá trị là 0.Flags (hay Control bits)Bao gồm 6 cờ:URGCờ cho trường Urgent pointerACKCờ cho trường AcknowledgementPSHHàm PushRSTThiết lập lại đường truyềnSYNĐồng bộ lại số thứ tựFINKhông gửi thêm số liệuWindowSố byte có thể nhận bắt đầu từ giá trị của trường báo nhận (ACK)Checksum16 bít kiểm tra cho cả phần header và dữ liệu. Phương pháp sử dụng được mô tả trong RFC 793:16 bít của trường kiểm tra là bổ sung của tổng tất cả các từ 16 bít trong gói tin. Trong trường hợp số octet (khối 8 bít) của header và dữ liệu là lẻ thì octet cuối được bổ sung với các bít 0. Các bít này không được truyền. Khi tính tổng, giá trị của trường kiểm tra được thay thế bằng 0,Nói một cách khác, tất cả các từ 16 bít được cộng với nhau. Kết quả thu được sau khi đảo giá trị từng bít được điền vào trường kiểm tra. Về mặt thuật toán, quá trình này giống với IPv4.Điểm khác nhau chỉ ở chỗ dữ liệu dùng để tính tổng kiểm tra. Dưới đây là một header của IP:
+Bít 0 - 34 - 78 - 910 - 1516 - 31
0Source address
32Destination address
64ZerosProtocolTCP length
96Source PortDestination Port
128Sequence Number
160Acknowledgement Number
192Data OffsetReservedFlagsWindow
225ChecksumUrgent Pointer
257Options (optional)
257/289+ 
Data
 
Các địa chỉ nguồn và đích là các địa chỉ IPv4. Giá trị của trường protocol là 6 (giá trị dành cho TCP, xem thêm: Danh sách số hiệu giao thức IPv4). Giá trị của trường TCP length field là độ dài của toàn bộ phần header và dữ liệu của gói TCP.Urgent pointerNếu cờ URG bật thì giá trị trường này chính là số từ 16 bít mà số thứ tự gói tin (sequence number) cần dịch trái.OptionsĐây là trường tùy chọn. Nếu có thì độ dài là bội số của 32 bít.

Dữ liệu

Trường cuối cùng không thuộc về header. Giá trị của trường này là thông tin dành cho các tầng trên (trong mô hình 7 lớp OSI). Thông tin về giao thức của tầng trên không được chỉ rõ trong phần header mà phụ thuộc vào cổng được chọn.

Liên quan